YES 4.7780000000000005
H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/empty.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:
↳ HASKELL
↳ BR
mainModule Main
| ((digitToInt :: Char -> Int) :: Char -> Int) |
module Main where
Replaced joker patterns by fresh variables and removed binding patterns.
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
mainModule Main
| ((digitToInt :: Char -> Int) :: Char -> Int) |
module Main where
Cond Reductions:
The following Function with conditions
is transformed to
undefined0 | True | = undefined |
undefined1 | | = undefined0 False |
The following Function with conditions
digitToInt | c |
| | isDigit c |
= | fromEnum c - fromEnum '0' |
|
| | c >= 'a' && c <= 'f' |
= | fromEnum c - fromEnum 'a' + 10 |
|
| | c >= 'A' && c <= 'F' |
= | fromEnum c - fromEnum 'A' + 10 |
|
| | otherwise | |
|
is transformed to
digitToInt | c | = digitToInt4 c |
digitToInt0 | c True | = error [] |
digitToInt1 | c True | = fromEnum c - fromEnum 'A' + 10 |
digitToInt1 | c False | = digitToInt0 c otherwise |
digitToInt3 | c True | = fromEnum c - fromEnum '0' |
digitToInt3 | c False | = digitToInt2 c (c >= 'a' && c <= 'f') |
digitToInt2 | c True | = fromEnum c - fromEnum 'a' + 10 |
digitToInt2 | c False | = digitToInt1 c (c >= 'A' && c <= 'F') |
digitToInt4 | c | = digitToInt3 c (isDigit c) |
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
mainModule Main
| ((digitToInt :: Char -> Int) :: Char -> Int) |
module Main where
Num Reduction: All numbers are transformed to thier corresponding representation with Pos, Neg, Succ and Zero.
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
mainModule Main
| (digitToInt :: Char -> Int) |
module Main where
Haskell To QDPs
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primMinusNat(Succ(vx1030), Succ(vx1040)) → new_primMinusNat(vx1030, vx1040)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primMinusNat(Succ(vx1030), Succ(vx1040)) → new_primMinusNat(vx1030, vx1040)
The graph contains the following edges 1 > 1, 2 > 2
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primPlusNat(Succ(vx134000), Succ(vx1330)) → new_primPlusNat(vx134000, vx1330)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primPlusNat(Succ(vx134000), Succ(vx1330)) → new_primPlusNat(vx134000, vx1330)
The graph contains the following edges 1 > 1, 2 > 2
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt1(vx136, Succ(vx1370), Succ(vx1380)) → new_digitToInt1(vx136, vx1370, vx1380)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt1(vx136, Succ(vx1370), Succ(vx1380)) → new_digitToInt1(vx136, vx1370, vx1380)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt10(vx123, Succ(vx1240), Succ(vx1250), vx126) → new_digitToInt10(vx123, vx1240, vx1250, vx126)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt10(vx123, Succ(vx1240), Succ(vx1250), vx126) → new_digitToInt10(vx123, vx1240, vx1250, vx126)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 4 >= 4
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt2(vx119, Succ(vx1200), Succ(vx1210)) → new_digitToInt2(vx119, vx1200, vx1210)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt2(vx119, Succ(vx1200), Succ(vx1210)) → new_digitToInt2(vx119, vx1200, vx1210)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt20(vx98, Succ(vx990), Succ(vx1000), vx101) → new_digitToInt20(vx98, vx990, vx1000, vx101)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt20(vx98, Succ(vx990), Succ(vx1000), vx101) → new_digitToInt20(vx98, vx990, vx1000, vx101)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 4 >= 4
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt3(vx89, Succ(vx900), Succ(vx910)) → new_digitToInt3(vx89, vx900, vx910)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt3(vx89, Succ(vx900), Succ(vx910)) → new_digitToInt3(vx89, vx900, vx910)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ NumRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
Q DP problem:
The TRS P consists of the following rules:
new_digitToInt30(vx61, Succ(vx620), Succ(vx630), vx64) → new_digitToInt30(vx61, vx620, vx630, vx64)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_digitToInt30(vx61, Succ(vx620), Succ(vx630), vx64) → new_digitToInt30(vx61, vx620, vx630, vx64)
The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 4 >= 4